/* eslint-disable no-shadow */

/**
 * 获取城市下的区域数量
 * @param {object} search   查询参数
 * @returns 区域数量
 */
export function count({ search }) {
  return RSocket.rr({
    route: 'prices.count',
    args: { search },
  });
}

/**
 * 获取城市下的区域列表
 * @param {string} cityId 城市Id
 * @param {object} args   查询和分页参数
 * @returns 区域列表
 */
export function search({ search, pg }) {
  return RSocket.rs({
    route: 'prices',
    args: {
      search,
      pg,
    },
  });
}

/**
 * 获取城市或区域
 * @param {string} id 城市或区域Id
 * @returns 城市或区域
 */
export function get(id) {
  return RSocket.rr({
    route: `prices.${id}`,
  });
}

/**
 * 修改城市或区域
 * @param {object} data 城市或区域
 * @returns 修改后的数据
 */
export function update(data) {
  return RSocket.rr({
    route: `prices.${data.id}.update`,
    data,
  });
}

/**
 * 创建城市或区域
 * @param {*} data 城市或区域
 * @returns 创建后的城市或区域
 */
export function create(data) {
  return RSocket.rr({
    route: 'prices.create',
    data,
  });
}

/**
 * 删除城市或区域
 * @param {string} id 城市或区域Id
 * @returns 删除的记录数
 */
export function remove(id) {
  return RSocket.rr({
    route: `prices.${id}.delete`,
  });
}

/**
 * 查询订单数
 * @param {object} param0
 * @returns
 */
export function orderCount({ search }) {
  return RSocket.rr({
    route: 'scorders.count',
    args: { search },
  });
}

/**
 * 查询订单
 * @param {object} param0
 * @returns
 */
export function orders({ search, pg }) {
  return RSocket.rr({
    route: 'scorders.count',
    args: { search, pg },
  });
}

/**
 * 查询班次信息
 * @param {object} data
 * @returns 班次列表
 */
export function shifts(id) {
  return RSocket.rr({
    route: `shifts.set.${id}`,
  });
}

/**
 * 更新承运商信息
 * @param {number} priceType
 * @returns
 */
export function updateCompanyInfo(priceType) {
  return RSocket.rr({
    route: 'cbv.company.prices.update.info',
    args: { priceType },
  });
}

/**
 * 获取存在的线路，用于查重
 * @param {{
    priceType: number,
    startMainArea: string,
    endMainArea: string,
    startMinorAreas: string[],
    endMinorAreas: string[],
    ports: string[]
  }} search 查询参数
 */
export function existingLines(search) {
  return RSocket.rs({
    route: 'prices.uniqueness',
    args: { search },
  });
}

/**
 * 获取运营公司列表
 * @returns 运营公司列表
 */
export function operatingCompanies() {
  return RSocket.rs({
    route: 'companys',
    args: { search: { isOperating: true }, pg: { size: 100000 } },
  });
}

/**
 * 获取专线站点
 * @param {string} cityId 城市id
 * @returns 站点列表
 */
export function getStations(cityId) {
  return RSocket.rs({
    route: 'stations.shuttle',
    args: {
      search: { city: cityId },
      pg: { size: 10000 },
    },
  });
}

/**
 * 获取班次数量
 * @param {object} search   查询参数
 * @returns 区域数量
 */
export function shiftsCount(search) {
  return RSocket.rr({
    route: 'shifts.count',
    args: { search: { ...search } },
  });
}

/**
 * @description 获取公司
 * @param {*} args 参数
 * @returns array
 */
export function getCompany() {
  return RSocket.rs({
    route: 'companys',
    args: {
      search: { isOperating: true },
      pg: {
        page: 0,
        size: 99,
      },
    },
  });
}

/**
 * 获取班次信息
 * @param {*} args 参数
 * @returns array
 */
export function getShifts({ search }) {
  return RSocket.rs({
    route: 'shifts',
    args: {
      search: { isOperating: true, ...search },
      pg: {
        page: 0,
        size: 1,
      },
    },
  });
}

/**
 * 获取指定班车站点信息
 * @param {*} id 线路id
 * @returns {object} 班次站点信息
 */
export function getStationShuttle(id) {
  return RSocket.rr({
    route: `stations.shuttle.${id}`,
  });
}

/**
 * 获取班车站点信息
 * @param {*} id 线路id
 * @returns {object} 班次站点信息
 */
export function getShuttle(args) {
  return RSocket.rs({
    route: 'stations.shuttle',
    args: {
      search: { ...args },
      pg: {
        page: 0,
        size: 99,
        sort: ['crDate;desc'],
      },
    },
  });
}

/**
 * 获取巴士站点
 */
export function getBusStation(args) {
  return RSocket.rs({
    route: 'prices.get.bus.station',
    data: { ...args },
  });
}

/**
 * 获取承运商列表
 */
export function getCompanies(args) {
  return RSocket.rs({
    route: 'companys',
    args: { ...args },
  });
}

/**
 * 根据手机号获取用户
 */
export function getUserInfo(mobile) {
  return RSocket.rr({
    route: `users.bymobile.${mobile}`,
  });
}
